#ifndef FACTION_H
#define FACTION_H


#include <map>
#include <string>
#include <vector>
#include "character.h"
#include "region.h"


class Faction
{
public:
	static void                     add(std::shared_ptr<Faction> faction);
	static std::shared_ptr<Faction> get(std::string id);

	static std::map<std::string, std::shared_ptr<Faction>>& getFactionMap();

	std::string id;
	std::string cultureID;
	std::string symbolPath;

	bool isPlayable;

	unsigned int denari;
	unsigned int kingsPurse;

	std::vector<std::shared_ptr<Region>>    regions;
	std::vector<std::shared_ptr<Character>> characters;

private:
	static std::map<std::string, std::shared_ptr<Faction>> factionMap;
};


#endif